package me.zhao.subscribe.weatherSubscribe;

/**
 * 具体的观察者对象，实现更新的方法，使自身的状态和目标的状态保持一致
 * @author zhaoying
 *
 */
public class ConcreateObserver implements Observer {
	//观察者名字，是谁收到了消息
	private String observerName;
	
	//天气内容，从目标处获取
	private String weatherContent;
	
	//提醒的内容
	private String remindThing;
	
	/**
	 * 获取目标类的状态并同步到观察者状态中
	 * 拉模型：观察者主动到目标对象中获取，从目标对象中拉取部分少量信息，通常要把目标传给观察者
	 * @param subject
	 */
	@Override
	public void update(WeatherSubject subject) {
		weatherContent = ((ConcreateWeatherSubject) subject).getWeatherContent();
		System.out.println(observerName + "收到了" + weatherContent + ""+remindThing);
	}
	
	/**
	 * 更新的接口
	 * 推模型：将信息推给订阅者，不管观察者/订阅者是否需要，不需要把目标对象传给观察者，按需传入信息（如天气信息）
	 * @param subject 传入的目标对象，方便获取相应目标对象的状态
	 */
	@Override
	public void updatePush(String weatherContent) {
		System.out.println(observerName + "收到推送" + weatherContent + ""+remindThing);
	}
	
	public String getObserverName() {
		return observerName;
	}

	public void setObserverName(String observerName) {
		this.observerName = observerName;
	}

	public String getWeatherContent() {
		return weatherContent;
	}

	public void setWeatherContent(String weatherContent) {
		this.weatherContent = weatherContent;
	}

	public String getRemindThing() {
		return remindThing;
	}

	public void setRemindThing(String remindThing) {
		this.remindThing = remindThing;
	}
}
